// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import "./interfaces/IInvestmentManager.sol";
import {IACLManager} from "./interfaces/IACLManager.sol";

abstract contract InvestmentManager is IInvestmentManager {
    address public override activePool;

    constructor() {}

    function registerPool(address pool) external override onlyProtocolTrader {
        require(pool != address(0), "InvestmentManager: registerPool: pool is zero");
        require(activePool == address(0), "InvestmentManager: registerPool: pool is already activated");
        activePool = pool;
    }

    function entry() external virtual;

    function exit() external virtual;

    function emergency() external virtual;

    modifier onlyProtocolAdmin() virtual;

    modifier onlyProtocolTrader() virtual;

    modifier onlyActivePool() {
        require(msg.sender == activePool, "InvestmentManager: caller is not the active pool");
        _;
    }
}
